状态机
使用状态机 (State Manager) 在 Kanzi 应用程序中创建不同的状态。 例如,您可以定义不同状态下按钮的外观和行为,例如当用户选定、按下、按住或松开按钮时,该按钮如何反应。Kanzi 使用其动画系统对两种状态之间的迁移进行动画处理。请参阅动画系统。
每个状态机由以下项组成:
- 状态组。状态组包含各种状态,定义控制器属性和状态组中状态之间的迁移。典型的迁移定义了两个状态的属性值之间的周期和插值路径。要定义迁移,您可以使用所有属性适用的一般准则、使用指定的各个属性的插值或使用动画工程。
- 状态。每个状态都包含一组属性,用于定义将状态管理器分配到的节点的外观和行为。在每个状态组中,一次只能有一个状态为活动状态。状态还可以通过启用或禁用使用已启用属性的控制输入、在触发器设置中将状态设为触发器的条件,或明确定义触发器和每个状态的动作,来定义交互。
- 状态对象。状态对象定义特定状态的节点属性。例如,您可以向包含 模型 (Model) 节点且该节点定义按钮外观的 2D 按钮 (Button 2D) 节点分配状态机。状态对象使用 目标对象路径 (Target Object Path) 设置 模型 (Model) 节点中定义的网格的属性。例如,./Mesh。
例如,按钮的状态机可以包含三个状态组:按钮已按下、按钮已松开以及将鼠标悬停在按钮上方。每个状态组都包含已启用和已禁用的状态,这些状态通过状态对象定义按钮处于其中一种状态时的外观和行为,以及状态之间的迁移。
您可以通过以下方式定义两种状态之间的变化:
- 为状态组设置控制器属性,为每个状态设置该属性的值。这些可以是隐式属性,例如按钮 (Button)节点的为向下 (Is Down) 属性。属性更改时的状态变化,可以是节点的固有逻辑的一部分,也可以是指定的设置属性 (Set Property) 动作或动画。请参阅使用控制器属性设置状态。
- 使用状态机 (State Manager) 动作转到状态 (Go to State)、下一状态 (Next State) 和上一状态 (Previous State)。如果您使用状态机 (State Manager) 动作和控制器属性,请注意当控制器属性更改时,它会重写之前设置的状态。请参阅使用状态机 (State Manager) 动作设置状态。
通过完成以下教程之一学习如何使用状态机:
缓动函数
使用缓动函数使 UI 元素更逼真。由于现实生活中的物体不会立即启动或停止,所以合适的缓动函数可以帮您营造更愉快的用户体验。请参阅使用状态迁移。
将鼠标悬停在缓动函数的图像上查看其创建的动画的类型。
另请参阅
教程:使用状态机控制您的应用程序
教程:创建按钮
教程:创建切换按钮
教程:创建组合仪表指示灯
使用状态机
使用状态迁移
动画系统
打开导航